package edu.northwestern.cbits.purple_robot_manager.config; import java.util.List; import java.util.Map; import edu.northwestern.cbits.purple_robot_manager.PurpleRobotApplication; import edu.northwestern.cbits.purple_robot_manager.probes.ProbeManager; import edu.northwestern.cbits.purple_robot_manager.triggers.TriggerManager; import jsint.Pair; import jsint.Symbol; import android.content.Context; public class SchemeConfigFile { private Context _context; public SchemeConfigFile(Context context) { this._context = context; } public String triggersScript(Context context) { return this.triggersList(TriggerManager.getInstance(context).triggerConfigurations(this._context)).first() .toString(); } public String toString() { Pair rest = this.triggersList(TriggerManager.getInstance(this._context).triggerConfigurations(this._context)); rest = new Pair(SchemeConfigFile.probesList(ProbeManager.probeConfigurations(this._context)), rest); rest = new Pair(this.configuration(this._context), rest); Pair root = new Pair(Symbol.BEGIN, rest); return root.toString(); } private Pair configuration(Context context) { Map<String, Object> configMap = PurpleRobotApplication.configuration(context); return new Pair(Symbol.intern("pr-update-config"), SchemeConfigFile.pairsList(configMap)); } private Pair triggersList(List<Map<String, Object>> configs) { Pair rest = Pair.EMPTY; if (configs.size() == 0) return rest; for (Map<String, Object> config : configs) { rest = new Pair(new Pair(Symbol.intern("pr-update-trigger"), SchemeConfigFile.pairsList(config)), rest); } return new Pair(new Pair(Symbol.BEGIN, rest), Pair.EMPTY); } private static Pair probesList(List<Map<String, Object>> configs) { Pair rest = Pair.EMPTY; for (Map<String, Object> config : configs) { rest = new Pair(new Pair(Symbol.intern("pr-update-probe"), SchemeConfigFile.pairsList(config)), rest); } return new Pair(Symbol.BEGIN, rest); } private static Pair pairsList(Map<String, Object> config) { Pair list = Pair.EMPTY; for (String key : config.keySet()) { list = new Pair(new Pair(key, config.get(key)), list); } return new Pair(new Pair(Symbol.QUOTE, new Pair(list, Pair.EMPTY)), Pair.EMPTY); } public static Pair probeConfig(Map<String, Object> config) { return new Pair(Symbol.intern("pr-update-probe"), SchemeConfigFile.pairsList(config)); } }